package com.lingnan.wanxiangxinxun.service;

import com.lingnan.wanxiangxinxun.entity.dto.News_client_updateDTO;
import com.lingnan.wanxiangxinxun.entity.dto.News_service_updateDTO;
import com.lingnan.wanxiangxinxun.entity.dto.query.News_queryDTO;
import com.lingnan.wanxiangxinxun.entity.po.News;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lingnan.wanxiangxinxun.entity.vo.common.PageVO;
import com.lingnan.wanxiangxinxun.entity.vo.common.Result;
import com.lingnan.wanxiangxinxun.entity.vo.service.NewsVO;

import java.util.List;

/**
 * <p>
 * 新闻表 服务类
 * </p>
 *
 * @author swl
 * @since 2025-03-13
 */
public interface INewsService extends IService<News> {

    boolean deleteById(Integer id);


    int updateOneNewsById(News_service_updateDTO newsDTO);

    void updateNewData(News_client_updateDTO newsDTO);

    //更新点赞数
    void updateNewData_likeNum(Integer newsId, Integer userId);

    //更新收藏数
    void updateNewData_favoriteNum(Integer newsId, Integer userId);

    //更新浏览数
    void updateNewData_viewNum(Integer newsId, Integer userId);

    //设置头条新闻
    Result setHeadlineNews(Integer newsId, Integer checkerId);

    PageVO<NewsVO> getAllInPage(long current, long size);

    PageVO<NewsVO> getInCondition(News_queryDTO newsAddDTO);

    //获取热门新闻
    List<News> getHotNews(Integer size);

    //为用户推荐新闻
    List<News> pushNews(Integer userId, long current, long size);

    //查找相关阅读
    List<News> getRelatedNews(Integer categoryId, Integer currentNewsId);

    //根据新闻id获取新闻
    List<News> getNewsListById(List<Integer> ids, Integer userId);

    //根据用户id获取用户点赞的新闻
    List<News> getNewsByUserLike(Integer userId, long current, long size);

    //根据用户id获取用户收藏的新闻
    List<News> getNewsByUserFavorite(Integer userId, long current, long size);

    //根据用户id获取用户浏览过的新闻
    List<News> getNewsByUserHistory(Integer userId, long current, long size);




    //添加热门搜索
    Result setHotSearchList(String value, Integer checkerId);

    //删除某条热门搜索
    Result deleteHotSearchValue(Integer index, Integer checkerId);

    //更改热门搜索顺序（前端拖拽修改）
    Result updateHotSearchListOrder(List<String> valueList, Integer checkerId);

    //修改热门搜索（修改标题）
    Result updateHotSearchList(String title, Integer index, Integer checkerId);

    //获取热门搜索
    List<String> getHotSearchList();
}
